
package cn.org.chiss.rhin._2015.base.document;

import cn.org.chiss.rhin._2015.base.Integer;
import cn.org.chiss.rhin._2015.base.String;
import cn.org.chiss.rhin._2015.base.*;
import cn.org.chiss.rhin._2015.base.object.Patient;
import cn.org.chiss.rhin._2015.base.object.Practitioner;
import cn.org.chiss.rhin._2015.base.object.RegObjectMessage;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import java.util.List;


/**
 * 文档元数据.消息体
 * 
 * <p>DocumentEntry complex type的 Java 类。
 * 
 * <p>以下模式片段指定包含在此类中的预期内容。
 * 
 * <pre>
 * &lt;complexType name="DocumentEntry"&gt;
 *   &lt;complexContent&gt;
 *     &lt;extension base="{http://www.chiss.org.cn/rhin/2015}RegObject"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="languageCode" type="{http://www.chiss.org.cn/rhin/2015}Code" minOccurs="0"/&gt;
 *         &lt;element name="title" type="{http://www.chiss.org.cn/rhin/2015}String" minOccurs="0"/&gt;
 *         &lt;element name="confidentialityCode" type="{http://www.chiss.org.cn/rhin/2015}Coding" minOccurs="0"/&gt;
 *         &lt;element name="creationTime" type="{http://www.chiss.org.cn/rhin/2015}DateTime"/&gt;
 *         &lt;element name="mimeType" type="{http://www.chiss.org.cn/rhin/2015}String" minOccurs="0"/&gt;
 *         &lt;element name="formatCode" type="{http://www.chiss.org.cn/rhin/2015}Code" minOccurs="0"/&gt;
 *         &lt;element name="objectType" type="{http://www.chiss.org.cn/rhin/2015}ObjectType" minOccurs="0"/&gt;
 *         &lt;element name="size" type="{http://www.chiss.org.cn/rhin/2015}Integer" minOccurs="0"/&gt;
 *         &lt;element name="hash" type="{http://www.chiss.org.cn/rhin/2015}String" minOccurs="0"/&gt;
 *         &lt;element name="serviceStartTime" type="{http://www.chiss.org.cn/rhin/2015}DateTime" minOccurs="0"/&gt;
 *         &lt;element name="serviceStopTime" type="{http://www.chiss.org.cn/rhin/2015}DateTime" minOccurs="0"/&gt;
 *         &lt;element name="patientId" type="{http://www.chiss.org.cn/rhin/2015}Identifier"/&gt;
 *         &lt;element name="sourcePatientInfo" type="{http://www.chiss.org.cn/rhin/2015}Patient" minOccurs="0"/&gt;
 *         &lt;element name="author" type="{http://www.chiss.org.cn/rhin/2015}Author" minOccurs="0"/&gt;
 *         &lt;element name="legalAuthenticator" type="{http://www.chiss.org.cn/rhin/2015}Practitioner" minOccurs="0"/&gt;
 *         &lt;element name="healthcareFacilityTypeCode" type="{http://www.chiss.org.cn/rhin/2015}CodeableConcept" minOccurs="0"/&gt;
 *         &lt;element name="practiceSettingCode" type="{http://www.chiss.org.cn/rhin/2015}CodeableConcept" minOccurs="0"/&gt;
 *         &lt;element name="typeCode" type="{http://www.chiss.org.cn/rhin/2015}CodeableConcept" minOccurs="0"/&gt;
 *         &lt;element name="eventCode" type="{http://www.chiss.org.cn/rhin/2015}CodeableConcept" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="uniqueId" type="{http://www.chiss.org.cn/rhin/2015}OID" minOccurs="0"/&gt;
 *         &lt;element name="repositoryUniqueId" type="{http://www.chiss.org.cn/rhin/2015}OID" minOccurs="0"/&gt;
 *         &lt;element name="homeCommunityId" type="{http://www.chiss.org.cn/rhin/2015}OID" minOccurs="0"/&gt;
 *         &lt;element name="comments" type="{http://www.chiss.org.cn/rhin/2015}String" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *     &lt;/extension&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DocumentEntryMessage", propOrder = {
    "languageCode",
    "title",
    "confidentialityCode",
    "creationTime",
    "mimeType",
    "formatCode",
    "objectType",
    "size",
    "hash",
    "serviceStartTime",
    "serviceStopTime",
    "patientId",
    "sourcePatientInfo",
    "author",
    "legalAuthenticator",
    "healthcareFacilityTypeCode",
    "practiceSettingCode",
    "typeCode",
    "eventCode",
    "uniqueId",
    "repositoryUniqueId",
    "homeCommunityId",
    "comments"
})
@Data
@EqualsAndHashCode(callSuper=false)
public class DocumentEntryMessage extends RegObjectMessage
{
    /**
     * 语言
     * c非必填
     * m非必填
     */
    protected Code languageCode;
    /**
     * 标题
     * c非必填
     * m非必填
     */
    protected String title;
    /**
     * 访问权限
     * c必填
     * m必填
     */
    protected Coding confidentialityCode;
    /**
     * 文档创建时间
     * c必填
     * m必填
     */
    @XmlElement(required = true)
    protected DateTime creationTime;
    /**
     * MIME格式
     * c必填
     * m必填
     */
    protected String mimeType;
    /**
     * 文件格式
     * c必填
     * m必填
     */
    protected Code formatCode;
    /**
     * 文档元数据对象类型  静态的-元数据指向的文档是存在的
     *                  按需的-元数据指向的文档当前在文档库不存在,但是能够按需动态生成出来
     * c非必填
     * m非必填
     */
    protected ObjectType objectType;
    /**
     * 文档大小
     * m必填
     */
    protected Integer size;
    /**
     * 文档哈希值
     * m必填
     */
    protected String hash;
    /**
     * 活动开始时间
     * c非必填
     * m非必填
     */
    protected DateTime serviceStartTime;
    /**
     * 活动结束时间
     * c非必填
     * m非必填
     */
    protected DateTime serviceStopTime;
    /**
     * 患者唯一标识
     * c必填
     * m必填
     */
    @XmlElement(required = true)
    protected Identifier patientId;
    /**
     * 患者基本信息
     * c必填
     * m必填
     */
    protected Patient sourcePatientInfo;
    /**
     * 作者
     * c必填
     * m必填
     */
    protected Author author;
    /**
     * 审核者
     * c非必填
     * m非必填
     */
    protected Practitioner legalAuthenticator;
    /**
     * 就诊机构类型代码
     * c必填
     * m必填
     */
    protected CodeableConcept healthcareFacilityTypeCode;
    /**
     * 就诊机构专业分类代码
     * c必填
     * m必填
     */
    protected CodeableConcept practiceSettingCode;
    /**
     * 就诊活动的细粒度分类
     * c必填
     * m必填
     */
    protected CodeableConcept typeCode;
    /**
     * 事件代码列表
     * c非必填
     * m非必填
     */
    protected List<CodeableConcept> eventCode;
    /**
     * 文档唯一标识
     * c必填
     * m必填
     */
    protected OID uniqueId;
    /**
     * 文档存储库的唯一标识符
     */
    protected OID repositoryUniqueId;
    /**
     * 区域的唯一标识符
     */
    protected OID homeCommunityId;
    /**
     * 注释
     * c非必填
     * m非必填
     */
    protected String comments;

}
